草庐IT

C++ sizeof 包装类

全部标签

python - 使用 SWIG 从包装的 cpp 文件创建 DLL

我正在学习如何在Windows上使用SWIG。以下是我的c++代码:/*File:example.cxx*/#include"example.h"#defineM_PI3.14159265358979323846/*Movetheshapetoanewlocation*/voidShape::move(doubledx,doubledy){x+=dx;y+=dy;}intShape::nshapes=0;doubleCircle::area(void){returnM_PI*radius*radius;}doubleCircle::perimeter(void){return2*M_P

python - C 库的 python 包装的可维护性

我有一个设计糟糕的大(>300个公共(public)函数,>200个数值常量在头文件中用#define定义)我必须用Python包装。我有dll和h文件。该库每年更新一次,直到现在都以向后兼容的方式更新(即仅添加函数,常量保持其数值等)。但我不能保证,因为我不控制图书馆。使用ctypes,我看到了两种用Python包装它的方法:Mappingeveryconstantandfunctiontopython,1to1RedefiningtheAPIinPythonandmakingcallstothelibrary.第一个可以通过头文件以(大致)自动的方式完成,因此更易于维护和升级,第二

python - 在 Python 中实现 libPD(纯数据包装器)

我用Python创建了一个简单的基于文本的密室逃脱游戏,目的是嵌入纯数据补丁(通过libPd)以播放不同的声音文件(稍后将替换为生成算法)音乐)为我的每个不同的房间。我目前使用的python代码取自libPDgithub中的示例之一。如下——importpyaudioimportwaveimportsysfrompylibpdimport*p=pyaudio.PyAudio()ch=2sr=48000tpb=16bs=64stream=p.open(format=pyaudio.paInt16,channels=ch,rate=sr,input=True,output=True,fra

python - 如何创建一个能够包装实例、类和静态方法的 Python 类装饰器?

我想创建一个Python类装饰器(*),它能够无缝包装该类可能具有的所有方法类型:实例、类和静态。这是我目前拥有的代码,对破坏代码的部分进行了注释:defwrapItUp(method):defwrapped(*args,**kwargs):print"Thismethodcallwaswrapped!"returnmethod(*args,**kwargs)returnwrappeddundersICareAbout=["__init__","__str__","__repr__"]#,"__new__"]defdoICareAboutThisOne(cls,methodName):

python - 为什么我的 Fortran 代码用 f2py 包装使用了这么多内存?

我正在尝试计算大约十万个点之间的所有距离。我有以下用Fortran语言编写并使用f2py编译的代码:C1234567C123456789012345678901234567890123456789012345678901234567890123456789012subroutinedistances(coor,dist,n)doubleprecisioncoor(n,3),dist(n,n)integerndoubleprecisionx1,y1,z1,x2,y2,z2,diff2cf2pyintent(in)::coor,distcf2pyintent(in,out)::distcf

python - 编写绑定(bind)和包装器

我经常看到有人为用X语言编写的模块编写包装器以在Y语言中使用它。我想知道编写此类包装器的基础知识。从哪里开始?我的问题更具体地针对libgnokii,我如何开始为它编写python绑定(bind)。 最佳答案 您可以从阅读以下内容开始:extendingpythonwithcorc++然后,当您认为这太麻烦时,您可以查看swig或者可能Boost.Python.ctypes也可能有用。我已经完成了c++类的手动包装,并且使用了swig。swig更容易使用,但最后我想做一些不容易完成的事情(或者我懒得想办法)。所以我最终做了手动包装。

python - 包装子进程的标准输出/标准错误

我想捕获和显示我通过Python的子进程调用的进程的输出。我想我可以将我的类文件对象作为命名参数stdout和stderr传递我可以看到它访问了fileno属性-所以它正在对对象执行某些操作。但是,永远不会调用write()方法。我的方法是完全错误还是我只是遗漏了什么?classProcess(object):classStreamWrapper(object):def__init__(self,stream):self._stream=streamself._buffer=[]def_print(self,msg):printrepr(self),msgdef__getattr__(

c++ - SWIG 的 Python 包装器中临时对象的生命周期(?)

2月12日编辑我最近刚想出了一个奇怪的崩溃,使用一些SWIG为某些C++类生成的Python包装器。似乎SWIG和Python的结合有点急于清理临时值。事实上,它们是如此渴望,以至于在它们还在使用的时候就被清理干净了。一个显着压缩的版本看起来像这样:/*Example.hpp*/structFoo{intvalue;~Foo();};structBar{FootheFoo;Bar();};/*Example.cpp*/#include"Example.hpp"Bar::Bar(){theFoo.value=1;}Foo::~Foo(){value=0;}/*Example.i*/%mo

用于访问 Hg、Git 和可能的 Bazaar 存储库的 Python 包装器?

我正在寻找一个可以对存储库进行基本操作但独立于后端版本控制系统的Python库。通过基本操作,我指的是:初始化存储库、添加文件、提交、pull、推送、获取当前修订号。图书馆的用户可以这样做:importdvcs_wrapperasdvcsdvcs.set_backend('hg')#couldchoose'git','bzr'repo=dvcs.init('/home/me/my_repo')repo.add('/home/me/my_repo/*.py')repo.commit('Initialcommit')repo.push('http://bitbucket.org/....'

python - 如何使用纯 Python 扩展 API (python3) 包装 C++ 对象?

我想知道如何用PythonExtensionAPI包装C++对象(和distutils)无需外部工具(如Cython、Boost、SWIG等)。仅以纯Python方式,无需创建dll。请注意,我的C++对象有内存分配,因此必须调用析构函数以避免内存泄漏。#include"Voice.h"namespacetransformation{Voice::Voice(intfftSize){mem=newdouble[fftSize];}Voice::~Voice(){delete[]mem;}intVoice::method1(){/*dostuff*/return(1);}}我只想在Pyt